Minimal aliasing bit-error correction code

ABSTRACT

Systems and methods related to data encoders that can perform error detection or correction. The encoders and decoders may minimize the addition of errors due to aliasing in error correction codes by implementing operators associated with reduced aliasing parity generating or reduced aliasing error checking matrices.

BACKGROUND

This disclosure relates to systems that use error correction codes (ECC)for communication or storage and, more specifically, to single errorcorrection (SEC) codes with reduced probability of aliasing error.

This section is intended to introduce the reader to various aspects ofart that may be related to various aspects of the present disclosure,which are described or claimed below. This discussion is believed to behelpful in providing the reader with background information tofacilitate a better understanding of the various aspects of the presentdisclosure. Accordingly, it should be understood that these statementsare to be read in this light, and not as admissions of prior art.

Many electronic devices may transmit or store information by encodingthat information in the form of binary data words. For example, data canbe stored in a memory device as a sequence of binary words and can betransmitted over data communication lines as a serial stream of binarybits. Ordinarily, data corruption can take place during storage (e.g.,due to faults in the memory device) or transmission, (e.g., due to anoisy channel). To mitigate data corruption, parity bits that addredundancy to the data can be used to allow verification or correctionof data. The parity bits may be calculated and stored or transmitted,and the receiver may employ the parity bits to detect or correct anyerrors due in case data corruption occurred. The power of the datacorrection may, generally, be limited by the number of parity bitsstored with the system. As a result, improvement in error detection orcorrection codes may be associated with an increase in the size of thestorage memory or encoding or decoding circuitry.

BRIEF DESCRIPTION OF THE DRAWINGS

Various aspects of this disclosure may be better understood upon readingthe following detailed description and upon reference to the drawings inwhich:

FIG. 1 is a block diagram of an electronic device that may benefit fromthe encoders and decoders that implement a reduced aliasing code, inaccordance with an embodiment;

FIG. 2 is a block diagram of a data exchanges that may employ a reducedaliasing code, in accordance with an embodiment;

FIG. 3 is a block diagram of an encoder/decoder system that may be usedto generate codewords using a reduced aliasing single-error correction(SEC) code and to check or correct errors in codewords using the SECcode, in accordance with an embodiment;

FIG. 4 is a block diagram of a reduced aliasing decoder that may employa reduced aliasing SEC code, in accordance with an embodiment;

FIG. 5 is a block diagram of a reduced aliasing encoder that may employa reduced aliasing SEC code, in accordance with an embodiment;

FIG. 6 is a block diagram of an integrated reduced aliasingencoder/decoder that may employ a reduced aliasing SEC code, inaccordance with an embodiment;

FIG. 7 is a method to generate codewords using the encoders describedherein, in accordance with an embodiment;

FIG. 8 is a method to check or correct errors in codewords using thedecoders described herein, in accordance with an embodiment;

FIG. 9 is a method to adjust the probability of aliasing errors for theencoders or decoders described herein, in accordance with an embodiment;

FIG. 10 is a block diagram of a processor that may have more than onecore, may have an integrated memory controller, and may have integratedgraphics, in accordance with an embodiment;

FIG. 11 is a block diagram of a system having processors coupled to acontroller hub, in accordance with an embodiment;

FIG. 12 is a block diagram of a multiprocessor system operating as apoint-to-point interconnect system, in accordance with an embodiment;

FIG. 13 is a block diagram of a multiprocessor system with integratedgraphics, in accordance with an embodiment; and

FIG. 14 is a block diagram of a system-on-chip (SoC), in accordance withan embodiment.

DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS

One or more specific embodiments will be described below. In an effortto provide a concise description of these embodiments, not all featuresof an actual implementation are described in the specification. It maybe appreciated that in the development of any such actualimplementation, as in any engineering or design project, numerousimplementation-specific decisions must be made to achieve thedevelopers' specific goals, such as compliance with system-related andbusiness-related constraints, which may vary from one implementation toanother. Moreover, it may be appreciated that such a development effortmight be complex and time consuming, but would nevertheless be a routineundertaking of design, fabrication, and manufacture for those ofordinary skill having the benefit of this disclosure.

When introducing elements of various embodiments of the presentdisclosure, the articles “a,” “an,” and “the” are intended to mean thatthere are one or more of the elements. The terms “comprising,”“including,” and “having” are intended to be inclusive and mean thatthere may be additional elements other than the listed elements.Additionally, it should be understood that references to “oneembodiment” or “an embodiment” of the present disclosure are notintended to be interpreted as excluding the existence of additionalembodiments that also incorporate the recited features. Furthermore, thephrase A “based on” B is intended to mean that A is at least partiallybased on B. Moreover, unless expressly stated otherwise, the term “or”is intended to be inclusive (e.g., logical OR) and not exclusive (e.g.,logical XOR). In other words, the phrase A “or” B is intended to mean A,B, or both A and B.

Several electronic devices process information by encoding data using abinary alphabet. For example, user data, such as texts, images, soundsamples, videos, as well as data structures such as machine-readableobjects, databases, programming instructions, addresses, executablelibraries, and the like, can be encoded in as an ordered group of binarywords. These words may be stored in non-volatile memory (e.g., harddisks, solid-state disks, magnetic media, or compact discs) or involatile media (random access memory (RAM) devices, dynamicrandom-access memory (DRAM) devices, or cache memory in the processor).These words may be transmitted over device-to-device connections, whichmay be wired, such as in universal serial bus (USB) connections,peripheral component express (PCIe) connections, and Ethernetconnections, or wireless, such as in Bluetooth connections, cellularconnections, or wireless Ethernet connections.

Corruption of the data may take place during storage or transmission.Random bit flip errors due to electromagnetic discharges or power sourcespikes may occur to volatile and to non-volatile data. Noise in thechannels, due to external interference or signal degradation, may alsocause bit flip errors. To mitigate faults due to data corruption, errorcorrection codes (ECC) may be used. The ECC may employ parity bits thatadd redundancy to the stored or transmitted data. The redundancy fromthe parity bits allows detection or correction of errors due to the datacorruption. For example, a receiver of the data may verify if thereceived parity bits correspond to the accompanying data to verify dataintegrity. Certain ECCs are designed to allow the receiver to identifythe location of the corrupted bits correct the received dataaccordingly. As described herein, ECCs are inclusive of both errordetection codes, in which the parity bits that allow identification ofan error in a word, as well as error correction codes that allowidentification of the location of an error in a word.

The power of an ECC may be defined as the number of corrupted bits perword that may be detected or corrected. Generally, the power of an ECCmay be related to the number of parity bits per word. For example, anECC may be capable of correcting up to 1 bit per word (single errorcorrection (SEC) code), correcting up to 2 bits per word (dual errorcorrection (DEC) code), detecting up to 1-bit error per word (singleerror detection (SED) code), or detecting up to 2-bit errors per word(dual error detection (DED) code). When an error exceeds the power ofthe ECC, errors may go undetected or additional errors, or aliasingerrors, may be incorporated. For example, in a SEC code, a corruption totwo or more bits may go undetected, as there may be two words in the SECcode that share common parity bits (e.g., silent corruption). Moreover,in some situations, a corruption of two or more bits in a SEC code maycause misidentification of the location of the corruption, causing anintroduction of additional errors (e.g., aliasing errors) by the errorcorrection logic of the decoder. When aliasing occurs to a codeword ofan SEC code, a word with 2-bit errors may become a word with 3-biterrors due to a correction attempt by the receiver.

Increases in the number of parity bits generally improve the power of acode. For example, an SEC code for 128-bit words may employ 8 paritybits, whereas a single-error correction double error detection (SEC-DED)code for 128-bit words may employ 9 parity bits. However, the additionof parity bits may lead to increases in the amount of data to be storedor transmitted, or to an increase in the electrical power associatedwith the higher demand of circuitry resources. The present applicationis directed to electronic systems, and methods of operation thereof,that present an improved ECC performance by the use of novel encodersand decoders, without an increase in the number of parity bits and,thus, without an increased demand for circuitry resources. Specifically,the encoders or decoders described herein are designed to use a class ofSEC codes that can prevent or decrease the probability of aliasingerrors. To that end, certain constraints in the encoder or decodercircuitry, which may be associated with the class of SEC codes, may beemployed. The class of SEC codes associated with the encoders ordecoders described herein may provide a reduced or a minimal amount ofaliasing errors for a particular number of word lengths or parity bits.In some embodiments, the encoders or decoders may be adjusted to controlthe aliasing rate by relaxing certain constraints in the SEC codes, asfurther discussed below.

With the foregoing in mind, FIG. 1 illustrates systems that may benefitor be improved by the use of the encoders or decoders described herein.FIG. 1 illustrates an electronic device 10 that may include be a digitalcomputing system, or a digital data processing system. The electronicdevice 10 may be a computer system, a mobile phone, a wearable device, anetwork attached device, a data processing system, a data server, amedia device, or any other computing device. The electronic device 10may perform functionalities including but not limited to electronicgaming, data storage, database management, graphics processing, networkmanagement, sound editing, video editing, signal processing, sensor dataprocessing, control, machine learning, artificial intelligence, or forserving internet and mobile applications.

The electronic device 10 may include a processor 12, which may performcomputations with data. The processor 12 may include one or more generalpurpose processors and may include complex instruction-set processors(e.g., the Intel® Atom® processor, the Intel® Core® processor, or theIntel® Xeon® processor) or reduced-instruction-set processors (e.g., anAdvanced RISC Machine (ARM) processor). Processor 12 may becommunicatively coupled to a memory 14, which may be an on-die cachememory (e.g., a cache memory on the same day as the processor 12), anoff-chip cache memory, a random access memory (RAM) device (e.g., adynamic RAM (DRAM) device, a synchronous DRAM (SDRAM) device, adouble-data rate SDRAM (DDR SDRAM) device), a low-power DDR device(LPDDR), a graphics DDR device (GDDR) device).

The processor 12 may also be assisted by one or more co-processors 16,which may be dedicated data processing circuitry that implementingapplication-specific functionalities. Co-processors 16 may perform, forexample, graphics processing functions, network data processingfunctions, mathematical functions, vector computation functions, soundprocessing functions, digital signal processing, data filtering, machinelearning, artificial intelligence decision making, or databasemanagement functions. In some embodiments, a co-processor 16 mayimplement ECC circuitry that implements encoders or decoders thatperform the error detection or correction functionalities describedherein. Co-processors 16 may be application-specific integrated circuits(ASICs) or reconfigurable programmable logic devices (PLDs) such asfield programmable gate arrays (FPGAs). The co-processor 16 may accessthe memory 14 directly to perform its functions and may be controlled bythe processor 12.

The electronic device 10 may include interfaces 18 to exchange data withother devices, such as long-term storage devices (e.g., hard drivedisks, optical storage systems, magnetic storage systems, solid statedrives), network devices (e.g., an Ethernet adaptor, a Wi-Fi adaptor),peripheral interfaces (e.g., universal serial bus (USB), Bluetooth,peripheral component interface express (PCIe)) that may be used toconnect to input devices (e.g., keyboard, touchscreen, mouse) or displaydevices (e.g., display monitor, sound speakers). The interfaces mayinclude external connections 22 that may provide access to devicesexternal to the electronic device 10, such as access to a secondelectronic device via a network interface. The methods and systemsdescribed herein to incorporate error correction coding to data may beused in any of the data exchanges 20 between the processor 12, thememory 14, co-processors 16, or interfaces 18.

The diagram 50 of FIG. 2 illustrates an electronic system that mayemploy ECC systems to improve the operational its performance. Thediagram 50 illustrates a processing circuitry 52 (e.g., processor 12 orco-processor 16) that exchanges data 54 with memory 14. For example,data 54 may contain instructions that are executed by the processingcircuitry 52, such as a program stored in memory 14. The data 54 mayalso contain sections of the working memory or of information that isprocessed by the processing circuitry 52. In such systems, corruption ofdata 54 in the memory 14 or during transmission between memory 14 andprocessing circuitry 52 may lead to faulty performance of the electronicdevice. To mitigate errors due to data corruption, data 54 may beencoded using an SEC code, such as the ones described herein. To thatend, ECC circuitry that can decode the SEC code may allow the processingcircuitry 52 to detect errors, which may prevent faulty operation.Moreover, the above-mentioned ECC code may allow the processingcircuitry 52 to correct errors, which may increase the efficiency ofoperation. In some embodiments, circuitry associated with the ECCsystems may be located in the memory 14. For example, the memory 14 mayhave ECC circuitry that encodes the received data 54 prior to storage inthe memory 14. The memory 14 may also have ECC circuitry that verifiesintegrity of stored data prior to transmission (e.g., data 54) to theprocessing circuitry 52. While the present discussion relates to data 54exchanged between processing circuitry 52 and memory 14, the SEC codesdiscussed herein may be used with any type of data exchanges, asdiscussed above.

Diagram 60 of FIG. 3 illustrates an encoder/decoder circuitry 62 thatimplements the SEC codes discussed herein. The encoder/decoder circuitry62 can be disposed in processing circuitry 50 (e.g., processor 12,co-processor 16), in the memory 14, or in both. In some embodiments, theencoder/decoder circuitry 62 may be located in an interface 18 toprovide integrity to data transmitted through a communicationsconnection. The encoder/decoder circuitry 62 can be used to providereliability to stored and/or transmitted data words. The encoder/decodercircuitry 62 includes an encoder 66, which receives non-encoded datawords 63A and generates codewords 67A. Codewords 67A may be generated byconcatenating non-encoded data words 63A to parity bits calculated bythe encoder 66. The encoder/decoder circuitry 62 also includes a decoder68, which receives codewords 67B from the storage 64 and generatescorrected words 63B to be provided by the data processing circuitry.Corrected words 63B may be generated by verifying if the codewords 67Bare in accordance with the SEC code. To that end, the decoder 68calculates a syndrome vector from the codeword 67B to determine thepresence or location of a single bit error. The syndrome vector, whichis calculated in accordance with the SEC code in the decoder 68, may bea zero vector (e.g., all terms of the syndrome are equal to zero) whenno errors are present. A presence of a single “1” bit in the syndromevector indicates a presence of a single bit error, and the position ofthe single “1” bit may correspond to the position of the bit error inthe codeword 67B. The decoder 68 may use this information to correct(e.g., flip) the detected bit error. Moreover, the decoder 68 maydetermine that the corruption exceeds the error correction capacity ofthe SEC code, when the syndrome vector includes two or more “1” bits. Insuch situation the decoder 68 may report the data as non-usable, bydropping the word. In some embodiments, the reporting may be performedby generating a word 63B that contains a corrupted data flag.

FIG. 4 illustrates an implementation of the decoder 68. The decoder 68may include a syndrome calculation logic circuitry 81. The syndromecalculation logic circuitry 81 may include logic that implements anerror checking operator (e.g., the H-matrix 82). The H-matrix 82 may bea linear operator in a Galois Field with size two (GF2). The H-matrix 82may be represented as a binary array and/or as a logic circuit. Animplementation in logic circuitry of the H-matrix 82 may be obtained, byconverting the operations described in the binary array to logicoperations (e.g., converting GF2 additions to XOR operations andconverting GF2 multiplications to AND operations). It should beunderstood that other logic representations of the H-matrix 82 arepossible. The syndrome calculation logic circuitry 81, thus, includeslogic circuitry that implements the H-matrix 82 (i.e., logic circuitrythat performs operations described by the H-matrix 82). The binaryrepresentation of the H-matrix 82 may be formed by the concatenation ofthe D-matrix 84, which may correspond to the data segment, with theP-matrix 86, which may correspond to the parity segment. The D-matrix 84may have N columns and M rows, and the P-matrix 86 may have M columnsand M rows. As a result, the H-matrix 82 describes an operator that maytake codewords 67B with N+M bits and provide generate a syndrome 88 oflength M.

The decoder 68 may also include an error correction block 89. The errorcorrection block 89 may correct any corruption in the codeword 67B thatis detected by the syndrome calculation logic circuitry 81. The errorinformation may be included in the syndrome 88, generated as a result.For example, a syndrome 88 equal to a zero vector may indicate that nocorruption occurred. A syndrome 88 with a single “1” bit may indicatethe address in the data segment of the codeword 67B (e.g., the initial Nbits) that contains the corrupted information. As the codeword 67B is abinary codeword, the bit of the codeword 67B addressed by the syndrome88 may be corrected by flipping that bit. The error correction block 89may, thus, correct the codeword 67B to produce the corrected word 63B.

In order to implement the reduced aliasing code discussed herein,certain constraints in the D-matrix 84 and in the P-matrix 86 areimposed. As such, the SEC codes employed by the encoder and decodersdescribed herein may be described in terms of the associated H-matrix82. In order to understand the construction of the SEC code, considerthe example of an H-matrix 82 designed to operate on 128-bit words(i.e., N=128). An SEC code for such system should have M=8 bits, sinceM>log N+1. Other examples of codes that may be used include SEC codeshaving 256-bit words and 9 parity bits, or 64-bit words with 7 paritybits. Accordingly, the binary matrix associated with the H-matrix 82 mayhave 136 columns and 8 rows. The corresponding P-matrix 86 may havedimension 8×8 and the D-matrix 84 may have dimension 8×128. As eachcolumn has 8 elements, and each element can be either “0” or “1,” eachcolumn of the binary matrix representation of the H-matrix 82 is takenfrom a total of 255 possible columns, since the number of permutationsof 8-bit vectors excluding the zero vector is 8²−1=255. Moreover, in theconstruction of the H-matrix 82, all columns of its matrixrepresentation should be distinct, to be compatible with a proper SECcode. Thus, from the 255 possible columns from which to pick the 136columns that form the H-matrix 82, 128 columns have odd weight (i.e.,the sum of elements in GF2 is 1) and 127 columns have even weight (i.e.,the sum of elements in GF2 is 0). As discussed herein, odd-weightcolumns are columns in which the sum of elements in GF2 is 1 andeven-weight columns are columns in which the sum of elements in GF2 is0. A minimum-aliasing H-matrix 82, represented herein as H_(opt), may begenerated by assigning all possible 128 odd-weight columns to theD-matrix 84 and choosing 8 even-weight columns to form the P-matrix 86,as illustrated below.

$H_{opt} = \left\lbrack \begin{matrix}D \\\text{128~~Odd~~data~~columns}\end{matrix} \middle| \begin{matrix}P \\\text{8~~Even~~columns}\end{matrix} \right\rbrack$

Such an array may be free from aliasing errors (i.e., 2-bit errors inthe codeword do not become 3-bit errors in the word portion of thecodeword during the SEC decoding process). For example, consider acodeword 67B represented by C=[W|Y], in which W is the word of length128 and Y is the parity segment with length 8. The syndrome 88 may becalculated as S=HC^(T). As discussed above, the representation of theH-matrix 82 operator in matrix form H is associated with an SEC codeand, thus, any single error event can be corrected by inspection of S.When one considers the situation in which codeword C includes twoerrors, notice that only three possibilities can occur: (i) two errorsin the word W, (ii) two errors in the parity segment Y, or one error inthe word W and one error in the parity segment Y. As the D-matrix 84only includes even columns, in situation (i), the presence of two errorsin W, the double errors would not alias to a data column, and thus, notoggle in the word would be induced by a correction based on syndrome S.In situation (ii), the presence of two errors in Y would involve theaddition of two even parity columns, which would lead to even paritysyndrome S and not result in any additional corruption in the data. Insituation (iii), the presence of a single error in W and a single errorin Y would lead to an even/odd combination, which would not alias to adata column. Therefore, for a potential SEC code decoded by H_(opt), any2-bit error would not be aliased by a decoder into a 3-bit error in thedata segment. As a result, the number of corrupted bits in the datasegment will be, at most, 2. Accordingly, the minimum H-matrix 84(H_(opt)) may, without an increase in the number of parity bits M,prevent any three-error data corruption from being caused by aliasingfrom a double-error corruption event in the SEC codeword.

The use of a code compatible with the H_(opt) may be limited inpractical applications, since a P-matrix 86 with only even columns isgenerally non-invertible and an SEC encoder may include circuitry thatimplements operations associated with the inverse of the P-matrix 86 inits computation. In order to create a practical H-matrix 84, a column inthe P-matrix 86 may be replaced with an odd-weight column. Moreover, asthere may be only 128 odd-weight columns available, as discussed above,one column of the D-matrix 84 may be swapped with a P-matrix 86. Anexample of the construction of the H column is described below. Considerthe following H-matrix 84 with the following P-matrix 86 and theD-matrix 84 with 128 odd columns.

$H_{opt} = {\left\lbrack {\begin{matrix}1 & \; \\0 & \; \\0 & \; \\0 & \cdots \\0 & \text{127~~odd~~columns} \\0 & \; \\0 & \; \\0 & \;\end{matrix}\begin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 \\0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 \\0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\1 & 0 & 0 & 0 & 0 & 0 & 0 & 1\end{matrix}} \right\rbrack.}$

In order to make the P-matrix 86 invertible, one may swap columns to adda single odd column to P-matrix 86, as illustrated below:

$H_{1} = {\left\lbrack \begin{matrix}1 & \; \\0 & \; \\0 & \; \\0 & \cdots \\0 & \text{127~~odd~~columns} \\0 & \; \\0 & \; \\1 & \;\end{matrix} \middle| \begin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 \\0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 \\0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\0 & 0 & 0 & 0 & 0 & 0 & 0 & 1\end{matrix} \right\rbrack.}$

This system may be slightly more susceptible to aliasing in the firstbit, and that probability of aliasing may be calculated. There are

$\begin{pmatrix}136 \\2\end{pmatrix} = 9180$

combinations of double bit errors. The H₁ matrix above may have 189combinations which results in three-bit errors (126 errors from singlecolumn aliasing and 63 combinations from multi-column aliasing thatreverts to the first column), with a probability of aliasing or189/9180=2.06%. Note that the probability of aliasing may be adjustedbased on the number of even columns in the D-matrix 84. In the presentdisclosure, H-matrix 82 may be represented by H₁, H₂, . . . , H_(k), inwhich the index k corresponds to the number of odd columns in the Pmatrix. It should be understood that each H_(k) corresponds to a classof matrices. In fact, H_(k) may refer to any H-matrix for an SEC havingN data bits and M parity bits, in which the D segment may have a numberof odd-weight columns equal to N−k (e.g., N−1, N−2, etc.). Table 1provides the probability of aliasing for SEC codes with 128 bits and 8parity bits, based on the number of odd-weight columns.

H_(k) Aliasing Probability 2 4.57% 3 6.78% 4 8.94% 5 11.05% 6 13.11% 715.13% 8 17.09% 9 19.01% 10 20.88% 11 22.70% 12 24.47% 13 26.19% 1427.86% 15 29.49% 16 31.06% 17 32.59% 18 34.07% 19 35.49% 20 36.87% 2138.21% 22 39.49% 23 40.72% 24 41.90% 25 43.04% 26 44.13% 27 45.16% 2846.15% 29 47.09% 30 47.99% 31 48.83% 32 49.62%

FIG. 5 illustrates an implementation of the encoder 66. The encoder 66may include logic circuitry that is representative of an encodingoperator, or G-matrix 92. The G-matrix 92 may be a linear operator thatoperates in a Galois Field with size two (GF2), in which an addition maybe represented by a XOR operation and a multiplication may berepresented by an AND operation. The encoder 66, thus, includes logiccircuitry that performs the operations described by the G-matrix 92. Thebinary array representation of the G-matrix 92 may be formed by theconcatenation of an N×N identity matrix I 94, corresponding to the datasegment, and a parity generating P_(G)-matrix 96, corresponding to theparity segment. The P_(G)-matrix 96 may have M columns and N rows. Thus,for a word W of length M, the G-matrix 92 may generate the codewordC=GW=[W|Y], in which the parity bits may be calculated by Y=P_(G) W. Insome embodiments, the encoder 66 may include circuitry that performs thefull array operation C=GW. In some embodiments, the encoder 66 mayperform the operation Y=P_(G) W followed by a concatenation with theword W to form C. In order to design the logic of the encoder 66 thatcorresponds to a decoder 68 associated with a H-matrix 82, a paritygenerating P_(G)-matrix 96 that corresponds to the binary arrayrepresentation H=[D|P], can be calculated as P_(G)=(P^(−I)D)^(T). TheG-matrix 92 operator may, thus, be a concatenation of the identitymatrix 94 with the parity generating P_(G)-matrix 96. From the resultingG-matrix 92, logic circuitry may be implemented to obtain the encoder66.

In some embodiments, the encoder/decoder circuitry 62 may be employshared circuitry, as illustrated in the diagram 100 of FIG. 6. Diagram100 of FIG. 6 illustrate an encoder/decoder circuitry 62 that may beused to generate codeword 67A from a word 63, and to check the syndrome88 from a codeword formed by word portion 102 and the parity portion104. To that end, the encoder portion of the encoder/decoder circuitry62 may be formed by the parity generating block 106 and theconcatenation block 110, and the decoder portion of the encoder/decodercircuitry 62 may be formed by a parity generating block 106, theconcatenation block 107, and a parity-check block 108.

For a given H-matrix 82 (e.g., H_(k), as discussed above) that is formedby D-matrix 84 and P-matrix 86, the encoder portion of theencoder/decoder circuitry 62 may be performed by concatenating the word63 (i.e., identity operator applied to the word as illustrated in theG-matrix 92 described above) with the result of the application of theparity generating matrix P_(G) to the word 63. In the encoder/decodercircuitry 62 of FIG. 6, the concatenation is performed by theconcatenation block 110. The concatenation block 110 receives the word63 directly, as well as the parity bits calculated by parity generatingblock 106, which implements the linear operator represented by P_(G).The result of the concatenation block 110 is a codeword 67A.

Moreover, as discussed above, P_(G)=(P⁻¹D)^(T) and, thus, it followsfrom algebraic manipulation that D=P P_(G) ^(T). Thus, the calculationof a syndrome 88 from a codeword C=[W|Y] may be performed as by notingthat S=HC^(T)=[D W|P Y]=P[P_(G) ^(T) W|Y]. As a result, the syndrome Smay be calculated by applying the parity generating matrix P_(G) to theword portion 102 of a codeword, concatenating the result with the parityportion 104 of the codeword, and applying the P-matrix 86 to the result.In the encoder/decoder circuitry 62 of FIG. 6, the codeword may be splitinto a word portion 102 and a parity portion 104. The word portion 102may be processed by the parity generating block 106 and its result maybe transmitted to concatenation block 107. The concatenation block 107may also receive the parity portion 104 to form a message that may bechecked by parity-check block 108. The result may be the syndrome 88. Asthe both the P_(G)-matrix 96 is N×M and the D-matrix 84 is M×N, thereutilization of the parity generating block 106 in both the encoder andthe decoder may allow substantial reduction in the floorplan usage.

With the foregoing in mind, FIGS. 7, 8, and 9, illustrate methods toemploy the encoder/decoder systems that implements the SEC codes withreduced aliasing probability, as described herein. FIG. 7 illustrates amethod 120 to generate codewords with parity bits. In a first step, anencoder portion of the system receive words in process block 122. Theencoder generates parity bits in process block 124. The SEC codeemployed by the encoder in process block 124 belong to a class havingreduced aliasing probability. For example, the parity generatingcircuitry may be generated from a P_(G) matrix (e.g., P_(G) matrix 96)or a G matrix (e.g., G-matrix 92) that corresponds to a H-matrix 82 witha single even-weighted column in the data portion of its binary arrayrepresentation, as discussed above. As a result, the codewords generatedmay be less likely to suffer from aliasing errors when more than asingle error takes place. The words and the parity bits may beconcatenated in process block 126 for resilient storage.

The FIG. 8 illustrates a method 130 to retrieve and correct codewords,or data stored with parity bits. In process block 132, the decoder mayreceive the codewords. In process block 134, the decoder may detecterrors. Error detection may be performed by the calculation of asyndrome vector. In order to calculate the syndrome vector, the decodermay employ a H-matrix 82 having a single even-weighted column in thedata portion of its binary array representation, as discussed above. Asa result, of the use of the SEC code associated with the H-matrix 82,the probability of aliasing errors may be minimized, resulting inimproved error detection and correction capacity. In a process block136, the errors may be corrected in the bits indicated by the syndromevector. For example, the syndrome vector may indicate the location ofthe bit errors and, in process block 136, the bits with errors may beflipped. In process block 138, the corrected word may be provided.

FIG. 9 illustrates a method 140 to configure the encoder/decoder systembased on a probability of aliasing error. Method 140 may be performed ina synthesis software (e.g., an electronic synthesis software, electricalcomputer-aided design software), by a reprogrammable encoder/decodercircuitry (e.g., a soft-logic based encoder/decoder) and/or acustomizable software encoder or decoder. As discussed above, thealiasing error may be determined based on the number of odd columns inthe P-matrix 86. As a result, the encoder/decoder system may beuser-configurable based on a tolerance to aliasing errors. In a processblock 142, the synthesis software may receive a probability of aliasingerror. Based on that choice, a number of odd columns may beautomatically selected in process block 144. That selection may becalculated using a look-up table stored in the system or based on acombinatorial calculation performed by the configuration system. As aresult of that selection, a synthesis software may design a logiccircuit that implements an H-matrix and a G-matrix that implements theencoder/decoder system, as discussed above. The logic circuit may beimplemented in programmable logic, encoded as a look-up table inconfigurable ECC circuitry, and/or implemented as a hardened logicmodule (e.g., an ASIC).

With the foregoing in mind, FIGS. 10-14 illustrate examples of systemsthat may employ the circuitry to encode and/or decode data using the SECcodes above described. FIG. 10 is a block diagram of a processor 1000that may have more than one core, may have an integrated memorycontroller, and may have integrated graphics according to embodiments.The solid lined boxes in FIG. 10 illustrate a processor 1000 with asingle core 1002A, a system agent 1010, a set of one or more buscontroller units 1016, while the optional addition of the dashed linedboxes illustrates an alternative processor 1000 with multiple cores1002A-N, a set of one or more integrated memory controller unit(s) 1014in the system agent unit 1010, and special purpose logic 1008.

Thus, different implementations of the processor 1000 may include: 1) aCPU with the special purpose logic 1008 being integrated graphics and/orscientific (throughput) logic (which may include one or more cores), andthe cores 1002A-N being one or more general purpose cores (e.g., generalpurpose in-order cores, general purpose out-of-order cores, acombination of the two); 2) a coprocessor with the cores 1002A-N being alarge number of special purpose cores intended primarily for graphicsand/or scientific (throughput); and 3) a coprocessor with the cores1002A-N being a large number of general purpose in-order cores. Thus,the processor 1000 may be a general-purpose processor, coprocessor orspecial-purpose processor, such as, for example, a network orcommunication processor, compression engine, graphics processor, GPGPU(general purpose graphics processing unit), a high-throughput manyintegrated core (MIC) coprocessor (including 30 or more cores), embeddedprocessor, or the like. The processor may be implemented on one or morechips. The processor 1000 may be a part of and/or may be implemented onone or more substrates using any of a number of process technologies,such as, for example, BiCMOS, CMOS, or NMOS.

The memory hierarchy includes one or more levels of cache within thecores, a set of one or more shared cache units 1006, and external memory(not shown) coupled to the set of integrated memory controller units1014. The set of shared cache units 1006 may include one or moremid-level caches, such as level 2 (L2), level 3 (L3), level 4 (L4), orother levels of cache, a last level cache (LLC), and/or combinationsthereof. While in one embodiment a ring-based interconnect unit 1012interconnects the integrated graphics logic 1008 (e.g., a specialpurpose logic), the set of shared cache units 1006, and the system agentunit 1010/integrated memory controller unit(s) 1014, alternativeembodiments may use any number of well-known techniques forinterconnecting such units. In one embodiment, coherency is maintainedbetween one or more cache units 1006 and cores 1002-A-N.

In some embodiments, one or more of the cores 1002A-N are capable ofmulti-threading. The system agent 1010 includes those componentscoordinating and operating cores 1002A-N. The system agent unit 1010 mayinclude for example a power control unit (PCU) and a display unit. ThePCU may be or include logic and components needed for regulating thepower state of the cores 1002A-N and the integrated graphics logic 1008.The display unit is for driving one or more externally connecteddisplays.

The cores 1002A-N may be homogenous or heterogeneous in terms ofarchitecture instruction set; that is, two or more of the cores 1002A-Nmay be capable of execution the same instruction set, while others maybe capable of executing only a subset of that instruction set or adifferent instruction set.

FIGS. 11-14 are block diagrams of examples of computer architectures.Other system designs and configurations known in the arts for laptops,desktops, handheld PCs, personal digital assistants, engineeringworkstations, servers, network devices, network hubs, switches, embeddedprocessors, digital signal processors (DSPs), graphics devices, videogame devices, set-top boxes, micro controllers, cell phones, portablemedia players, hand held devices, and various other electronic devices,are also suitable. In general, a huge variety of systems or electronicdevices capable of incorporating a processor and/or other executionlogic as disclosed herein are generally suitable.

Referring now to FIG. 11, shown is a block diagram of a system 1100 inaccordance with one embodiment. The system 1100 may include one or moreprocessors 1110, 1115, which are coupled to a controller hub 1120. Inone embodiment the controller hub 1120 includes a graphics memorycontroller hub (GMCH) 1190 and an Input/Output Hub (IOH) 1150 (which maybe on separate chips); the GMCH 1190 includes memory and graphicscontrollers to which are coupled memory 1140 and a coprocessor 1145; theIOH 1150 couples input/output (I/O) devices 1160 to the GMCH 1190.Alternatively, one or both of the memory and graphics controllers areintegrated within the processor (as described herein), the memory 1140and the coprocessor 1145 are coupled directly to the processor 1110, andthe controller hub 1120 in a single chip with the IOH 1150.

The optional nature of additional processors 1115 is denoted in FIG. 11with broken lines. Each processor 1110, 1115 may include one or more ofthe processing cores described herein and may be some version of theprocessor 1000.

The memory 1140 may be, for example, dynamic random-access memory(DRAM), phase change memory (PCM), or a combination of the two. For atleast one embodiment, the controller hub 1120 communicates with theprocessor(s) 1110, 1115 via a multi-drop bus, such as a frontside bus(FSB), point-to-point interface such as QuickPath Interconnect (QPI), orsimilar connection 1195.

In one embodiment, the coprocessor 1145 is a special-purpose processor,such as, for example, a high-throughput MIC processor, a network orcommunication processor, compression engine, graphics processor, GPGPU,embedded processor, or the like. In one embodiment, controller hub 1120may include an integrated graphics accelerator.

There can be a variety of differences between the physical resources1110, 1115 in terms of a spectrum of metrics of merit includingarchitectural, microarchitectural, thermal, power consumptioncharacteristics, and the like.

In one embodiment, the processor 1110 executes instructions that controldata processing operations of a general type. Embedded within theinstructions may be coprocessor instructions. The processor 1110recognizes these coprocessor instructions as being of a type that shouldbe executed by the attached coprocessor 1145. Accordingly, the processor1110 issues these coprocessor instructions (or control signalsrepresenting coprocessor instructions) on a coprocessor bus or otherinterconnect, to coprocessor 1145. Coprocessor(s) 1145 accept andexecute the received coprocessor instructions.

Referring now to FIG. 12, shown is a block diagram of a first morespecific examples of a system 1200 in accordance with an embodiment. Asshown in FIG. 12, multiprocessor system 1200 is a point-to-pointinterconnect system, and includes a first processor 1270 and a secondprocessor 1280 coupled via a point-to-point interconnect 1250. Each ofprocessors 1270 and 1280 may be some version of the processor 1000. Inone embodiment, processors 1270 and 1280 are respectively processors1110 and 1115, while coprocessor 1238 is coprocessor 1145. In anotherembodiment, processors 1270 and 1280 are respectively processor 1110coprocessor 1145.

Processors 1270 and 1280 are shown including integrated memorycontroller (IMC) units 1272 and 1282, respectively. Processor 1270 alsoincludes as part of its bus controller unit's point-to-point (P-P)interfaces 1276 and 1278; similarly, second processor 1280 includes P-Pinterfaces 1286 and 1288. Processors 1270, 1280 may exchange informationvia a point-to-point (P-P) interface 1250 using P-P interface circuits1278, 1288. As shown in FIG. 12, IMCs 1272 and 1282 couple theprocessors to respective memories, namely a memory 1232 and a memory1234, which may be portions of main memory locally attached to therespective processors. Processors 1270, 1280 may each exchangeinformation with a chipset 1290 via individual P-P interfaces 1252, 1254using point-to-point interface circuits 1276, 1294, 1286, and 1298.Chipset 1290 may optionally exchange information with the coprocessor1238 via a high-performance interface 1292. In one embodiment, thecoprocessor 1238 is a special-purpose processor, such as, for example, ahigh-throughput MIC processor, a network or communication processor,compression engine, graphics processor, GPGPU, embedded processor, orthe like.

A shared cache (not shown) may be included in either processor oroutside of both processors yet connected with the processors via P-Pinterconnect, such that either or both processors' local cacheinformation may be stored in the shared cache if a processor is placedinto a low power mode. Chipset 1290 may be coupled to a first bus 1216via an interface 1296. In one embodiment, first bus 1216 may be aPeripheral Component Interconnect (PCI) bus, or a bus such as a PCIExpress bus or another third generation I/O interconnect bus, althoughthe scope of the present disclosure is not so limited.

As shown in FIG. 12, various I/O devices 1214 may be coupled to firstbus 1216, along with a bus bridge 1218 which couples first bus 1216 to asecond bus 1220. In one embodiment, one or more additional processor(s)1215, such as coprocessors, high-throughput MIC processors, GPGPUs,accelerators (such as, e.g., graphics accelerators or digital signalprocessing (DSP) units), field programmable gate arrays, or any otherprocessor, are coupled to first bus 1216. In one embodiment, second bus1220 may be a low pin count (LPC) bus. Various devices may be coupled toa second bus 1220 including, for example, a keyboard and/or mouse 1222,communication devices 1227 and a storage unit 1228 such as a disk driveor other mass storage device which may include instructions/code anddata 1230, in one embodiment. Further, an audio I/O 1224 may be coupledto the second bus 1220. Note that other architectures are possible. Forexample, instead of the point-to-point architecture of FIG. 12, a systemmay implement a multi-drop bus or other such architecture.

Referring now to FIG. 13, shown is a block diagram of a second exampleof a system 1300 in accordance with an embodiment of the presentdisclosure. Like elements in FIGS. 12 and 13 bear like referencenumerals, and certain aspects of FIG. 12 have been omitted from FIG. 13in order to avoid obscuring other aspects of FIG. 13. FIG. 13illustrates that the processors 1270, 1280 may include integrated memoryand I/O control logic (“CL”) 1272 and 1282, respectively. Thus, CL 1272,1282 may include integrated memory controller units and/or I/O controllogic. FIG. 13 illustrates that not only are the memories 1232, 1234coupled to the CL 1272, 1282, but also that I/O devices 1314 are alsocoupled to the control logic 1272, 1282. Legacy I/O devices 1315 arecoupled to the chipset 1290.

Referring now to FIG. 14, shown is a block diagram of a SoC 1400 inaccordance with an embodiment of the present disclosure. Similarelements in FIG. 10 bear like reference numerals. Also, dashed linedboxes are optional features on more advanced SoCs. In FIG. 14, aninterconnect unit(s) 1402 is coupled to: an application processor 1410which includes a set of one or more cores 1002A-N, which include cacheunits 1004A-N, and shared cache unit(s) 1006; a system agent unit 1010;a bus controller unit(s) 1016; an integrated memory controller unit(s)1014; a set or one or more coprocessors 1420 which may includeintegrated graphics logic, an image processor, an audio processor, and avideo processor; an static random access memory (SRAM) unit 1430; adirect memory access (DMA) unit 1432; and a display unit 1440 forcoupling to one or more external displays. In one embodiment, thecoprocessor(s) 1420 include a special-purpose processor, such as, forexample, a network or communication processor, compression engine,GPGPU, a high-throughput MIC processor, embedded processor, or the like.

Embodiments of the mechanisms disclosed herein may be implemented inhardware, software, firmware, or a combination of such implementationapproaches. Embodiments of the disclosure may be implemented as computerprograms or program code executing on programmable systems comprising atleast one processor, a storage system (including volatile andnon-volatile memory and/or storage elements), at least one input device,and at least one output device.

Program code, such as code 1230 illustrated in FIG. 12, may be appliedto input instructions to perform the functions described herein andgenerate output information. The output information may be applied toone or more output devices, in known fashion. For purposes of thisapplication, a processing system includes any system that has aprocessor, such as, for example; a digital signal processor (DSP), amicrocontroller, an application specific integrated circuit (ASIC), or amicroprocessor. The program code may be implemented in a high levelprocedural or object-oriented programming language to communicate with aprocessing system. The program code may also be implemented in assemblyor machine language. In fact, the mechanisms described herein are notlimited in scope to any particular programming language. In any case,the language may be a compiled or interpreted language. One or moreaspects of at least one embodiment may be implemented by representativeinstructions stored on a machine-readable medium which representsvarious logic within the processor, which when read by a machine causesthe machine to fabricate logic to perform the techniques describedherein. Such representations, known as “IP cores” may be stored on atangible, machine readable medium and supplied to various customers ormanufacturing facilities to load into the fabrication machines thatactually make the logic or processor.

Such machine-readable storage media may include, without limitation,non-transitory, tangible arrangements of articles manufactured or formedby a machine or device, including storage media such as hard disks, anyother type of disk including floppy disks, optical disks, compact diskread-only memories (CD-ROMs), rewritable compact disks (CD-RWs), andmagneto-optical disks, semiconductor devices such as read-only memories(ROMs), random access memories (RAMs) such as dynamic random accessmemories (DRAMs), static random access memories (SRAMs), erasableprogrammable read-only memories (EPROMs), flash memories, electricallyerasable programmable read-only memories (EEPROMs), phase change memory(PCM), magnetic or optical cards, or any other type of media suitablefor storing electronic instructions. Accordingly, embodiments of thedisclosure also include non-transitory, tangible machine-readable mediacontaining instructions or containing design data, such as HardwareDescription Language (HDL), which defines structures, circuits,apparatuses, processors and/or system features described herein. Suchembodiments may also be referred to as program products.

The methods and devices of this disclosure may be incorporated into anysuitable circuit. For example, the methods and devices may beincorporated into numerous types of devices such as microprocessors,memory devices, interface controllers, or other integrated circuits.Implementations may be incorporated in the form software, soft logicimplemented in a programmable logic device (PLD) or field-programmablegate array (FPGA), hard-logic implemented in a PLD or FPGA, orapplication-specific integrated circuit (ASIC). Moreover, while themethod operations have been described in a specific order, it should beunderstood that other operations may be performed in between describedoperations, described operations may be adjusted so that they occur atslightly different times or described operations may be distributed in asystem which allows the occurrence of the processing operations atvarious intervals associated with the processing, as long as theprocessing of overlying operations is performed as desired.

The embodiments set forth in the present disclosure may be susceptibleto various modifications and alternative forms, specific embodimentshave been shown by way of example in the drawings and have beendescribed in detail herein. However, it may be understood that thedisclosure is not intended to be limited to the particular formsdisclosed. The disclosure is to cover all modifications, equivalents,and alternatives falling within the spirit and scope of the disclosureas defined by the following appended claims. In addition, the techniquespresented and claimed herein are referenced and applied to materialobjects and concrete examples of a practical nature that demonstrablyimprove the present technical field and, as such, are not abstract,intangible or purely theoretical. Further, if any claims appended to theend of this specification contain one or more elements designated as“means for [perform]ing [a function] . . . ” or “step for [perform]ing[a function] . . . ,” it is intended that such elements are to beinterpreted under 35 U.S.C. 112(f). For any claims containing elementsdesignated in any other manner, however, it is intended that suchelements are not to be interpreted under 35 U.S.C. 112(f).

What is claimed is:
 1. Error correction code (ECC) circuitry comprising:encoder circuitry that receives a word and generates a first codeword ofan error correction code (ECC) comprising codewords with N data bits andM parity bits, wherein the encoder comprises logic circuitry thatgenerates parity bits from the word based on a parity generatingoperator P_(G) associated with the ECC; and decoder circuitry thatreceives a second codeword of the ECC and generates a syndrome vector,wherein the decoder comprises logic circuitry that implements aparity-checking operator H, the parity-checking operator H comprising aD-matrix segment comprising N columns associated with a data portion ofthe second codeword and a P-matrix segment comprising M columnsassociated with the parity portion of the second codeword, and wherein anumber of odd-weight columns in the D-matrix segment is N−1.
 2. The ECCcircuitry of claim 1, wherein N is 128 and M is
 8. 3. The ECC circuitryof claim 1, wherein the decoder comprises an error correction logiccircuitry that corrects a word portion of the second codeword based onthe syndrome vector.
 4. The ECC circuitry of claim 1, wherein the ECCcomprises a single error correction (SEC) code.
 5. The ECC circuitry ofclaim 4, wherein the SEC code is not a double error detection (DED)code, and wherein the SEC code is a reduced aliasing code.
 6. The ECCcircuitry of claim 1, wherein the encoder circuitry comprises P_(G)logic circuitry that implements the parity generating operator P_(G),and wherein the decoder circuitry receives an output of the P_(G) logiccircuitry. to implement the D-matrix segment of the parity-checkingoperator H by receiving an output of the logic circuitry implementingand applying to logic circuitry that implements the P-matrix segment ofthe parity-checking operator H.
 7. The ECC circuitry of claim 6, whereinthe decoder circuitry comprises comprising concatenating circuitry thatconcatenates the output from the P_(G) logic circuitry with the paritybits and provide the concatenated output to a P logic circuitry thatimplements the P-matrix segment of the parity-checking operator H toproduce the syndrome.
 8. The ECC circuitry of claim 1, comprisinghardened logic that comprises the encoder circuitry and the decodercircuitry.
 9. An electronic system comprising: error correction code(ECC) circuitry comprising a decoder that comprises: syndromecalculation circuitry that receives a codeword of an error correctioncode (ECC) and generates a syndrome vector corresponding to thecodeword, the syndrome calculation circuitry comprising logic comprisesa D segment logic circuitry and a P segment logic circuitry, wherein theD segment logic circuitry implements N data portion columns of aH-matrix associated with the ECC code and the P segment logic circuitryimplements M parity portion columns of the H-matrix, and wherein anumber of even-weight columns in the N data portion columns implementedby the D segment logic circuitry is at least one; and error correctioncircuitry configured to correct an error in the codeword indicated bythe syndrome vector.
 10. The electronic system of claim 9, wherein thenumber of even-weight columns in the N data portion columns implementedby the D segment logic circuitry is one.
 11. The electronic system ofclaim 9, wherein the number of even-weight columns in the N data portioncolumns implemented by the D segment logic circuitry.
 12. The electronicsystem of claim 9, wherein N is 128 and M is
 8. 13. The electronicsystem of claim 9, wherein the ECC circuitry is disposed in a memorydevice of the electronic system.
 14. The electronic system of claim 13,wherein the memory device comprises a double data rate synchronousdynamic random-access memory device (DDR SDRAM), a low power DDR SDRAM(LPDDR SDRAM) device, or a graphics DDR SDRAM (GDDR SDRAM) device. 15.The electronic system of claim 9, wherein the ECC circuitry is disposedin a processor or a co-processor of the electronic system.
 16. Theelectronic system of claim 9, wherein the ECC circuitry comprises anencoder that generates codewords of the ECC.
 17. A method, comprising:generating parity bits from a word using a parity generating logiccircuitry, wherein the parity generating logic circuitry that implementsa P_(G) operator associated with a reduced aliasing error correctingcode (ECC), wherein each codeword of the reduced aliasing ECC comprisesN data bits and P parity bits, and wherein the reduced aliasing ECC isassociated with a syndrome calculating operator H matrix that comprisesa D segment associated with a data portion of the reduced aliasing ECCand a P segment associated with a parity portion of the reduced aliasingECC, the D segment comprising one even-weight column and N−1 odd-weightcolumns; concatenating the word with the parity bits to form a codewordof the reduced aliasing ECC; and storing the codeword in memorycircuitry.
 18. The method of claim 17, wherein the reduced alias ECC isa single error correction (SEC) code that minimizes alias errors from todouble bit-errors.
 19. A method, comprising: receiving a codeword frommemory circuitry, wherein the codeword is from a reduced aliasing ECCand comprises N data bits and P parity bits; and generating a syndromevector from the codeword using a syndrome generating logic circuitrycomprising logic that implements a H matrix operator that comprises a Dsegment associated with a data portion of the reduced aliasing ECC and aP segment associated with a parity portion of the reduced aliasing ECC,the D segment comprising one even-weight column and N−1 odd-weightcolumns.
 20. The method of claim 19, comprising correcting the codewordbased on the syndrome by flipping a single bit of the codeword indicatedby the syndrome.